// internal/parser/ast/clause.go
package ast

import (
    "strconv"
)

// OrderByClause 表示ORDER BY子句中的一项
type OrderByClause struct {
    Column Expression // 排序的列
    Desc   bool       // 是否是降序(DESC)，否则为升序(ASC)
}

// String 返回ORDER BY子句的字符串表示
func (o *OrderByClause) String() string {
    if o.Desc {
        return o.Column.String() + " DESC"
    }
    return o.Column.String()
}

// LimitClause 表示LIMIT子句
type LimitClause struct {
    Count  int // 返回的最大行数
    Offset int // 起始偏移量(可选)
}

// String 返回LIMIT子句的字符串表示
func (l *LimitClause) String() string {
    if l.Offset > 0 {
        return strconv.Itoa(l.Offset) + ", " + strconv.Itoa(l.Count)
    }
    return strconv.Itoa(l.Count)
}